home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PsL Monthly 1993 December
/
PSL Monthly Shareware CD-ROM (December 1993).iso
/
prgmming
/
dos
/
c
/
cd_mci.exe
/
MCI.CPP
< prev
next >
Wrap
C/C++ Source or Header
|
1993-01-07
|
3KB
|
189 lines
/*
MCI.CPP
Klasse fⁿr die Ansteuerung des MCI Interfaces.
22.08.92 Norbert Unterberg
*/
#include <windows.h>
#include <mmsystem.h>
#include "mci.h"
MCI_OPEN_PARMS *CDAudio::GetOpenParams()
{
MCI_OPEN_PARMS *mci = MCI::GetOpenParams();
mci->lpstrDeviceType = "cdaudio";
return mci;
}
DWORD CDAudio::GetOpenFlags(MCI_OPEN_PARMS *mci)
{
DWORD dwFlags = MCI::GetOpenFlags(mci);
dwFlags |= MCI_OPEN_TYPE;
return dwFlags;
}
MCI::MCI(HWND hwnd)
{
dwCallback = (DWORD)hwnd;
szAlias = NULL;
dwCallback = NULL;
wDeviceID = 0;
}
MCI_OPEN_PARMS *MCI::GetOpenParams()
{
MCI_OPEN_PARMS *mci = new MCI_OPEN_PARMS;
mci->dwCallback = dwCallback;
mci->wReserved0 = 0;
mci->lpstrDeviceType = NULL;
mci->lpstrElementName = NULL;
mci->lpstrAlias = szAlias;
return mci;
}
DWORD MCI::GetOpenFlags(MCI_OPEN_PARMS *mci)
{
DWORD dwFlags = 0;
if (mci->lpstrAlias)
dwFlags |= MCI_OPEN_ALIAS;
return dwFlags;
}
MCI_GENERIC_PARMS *MCI::GetGenericParams()
{
MCI_GENERIC_PARMS *mci = new MCI_GENERIC_PARMS;
mci->dwCallback = dwCallback;
return mci;
}
DWORD MCI::GetStatus(DWORD dwItem, DWORD dwTrack)
{
MCI_STATUS_PARMS mci;
DWORD dwReturn;
DWORD dwFlags;
dwFlags = MCI_STATUS_ITEM | MCI_WAIT;
if (dwTrack)
dwFlags |= MCI_TRACK;
mci.dwCallback = dwCallback;
mci.dwItem = dwItem;
mci.dwTrack = dwTrack;
dwReturn = mciCommand(MCI_STATUS, dwFlags, &mci);
if (dwReturn)
return 0;
else
return mci.dwReturn;
}
DWORD MCI::Set(DWORD dwItem, DWORD dwValue)
{
MCI_SET_PARMS mci;
mci.dwCallback = dwCallback;
mci.dwTimeFormat = 0;
mci.dwAudio = 0;
if (dwItem == MCI_SET_AUDIO)
mci.dwAudio = dwValue;
if (dwItem == MCI_SET_TIME_FORMAT)
mci.dwTimeFormat = dwValue;
return mciCommand(MCI_SET, dwItem | MCI_WAIT, &mci);
}
DWORD MCI::Open(char *alias, DWORD dwFlags)
{
MCI_OPEN_PARMS *mci;
DWORD dwResult;
if (alias)
szAlias = alias;
mci = GetOpenParams();
dwResult = mciCommand(MCI_OPEN, GetOpenFlags(mci) | dwFlags, mci);
if (!dwResult)
wDeviceID = mci->wDeviceID;
DeleteOpenParams(mci);
return dwResult;
}
DWORD MCI::Close(DWORD dwFlags)
{
if (!wDeviceID)
return 0;
return mciSendCommand(wDeviceID, MCI_CLOSE, dwFlags,
(DWORD)(LPVOID)GetGenericParams());
}
DWORD MCI::Play(DWORD dwFlags, DWORD from, DWORD to)
{
MCI_PLAY_PARMS mci;
if (!wDeviceID)
return 0;
mci.dwCallback = dwCallback;
mci.dwFrom = from;
mci.dwTo = to;
return mciSendCommand(wDeviceID, MCI_PLAY, dwFlags,
(DWORD)(LPVOID)&mci);
}
DWORD MCI::Stop(DWORD dwFlags)
{
if (!wDeviceID)
return 0;
return mciSendCommand(wDeviceID, MCI_STOP, dwFlags,
(DWORD)(LPVOID)GetGenericParams());
}
DWORD MCI::Seek(DWORD dwFlags, DWORD to)
{
MCI_SEEK_PARMS mci;
if (!wDeviceID)
return 0;
mci.dwCallback = dwCallback;
mci.dwTo = to;
return mciSendCommand(wDeviceID, MCI_SEEK, dwFlags,
(DWORD)(LPVOID)&mci);
}